package com.fmy.mcsecurity.login.safety.violence;

/**
 * <p>
 * 防止暴力登录储存器
 * </p>
 *
 * @author Mr.Fmy
 * @since 2020-12-10
 */
public interface SafetyViolenceStorage {

    /**
     * 储存登录失败
     */
    void set(String username);

    /**
     * 获取该用户名当前有效重试次数
     */
    default int get(String username) {
        return 0;
    }

    /**
     * 根据重试次数得到相关规则
     *
     * @return 如果返回为null则表明不需要限制
     */
    default SafetyViolence getSafetyViolence(int retriesNum) {
        return null;
    }

    /**
     * 限制登录
     */
    void astrictLogin(String username, SafetyViolence safetyViolence);

    /**
     * 效验该用户是否被限制登录，还有多久才可登录
     */
    void valitionAstrictLogin(String username);
}
